Cryptography may be used to provide data integrity and/or data security for data communication. The latter can be important to protect the data communicated over a channel, including wired and wireless channels. One type of encryption makes use of a stream cipher. As opposed to block ciphers, which are characterized by production of a same block output in response to a same block input, stream ciphers can give different outputs at different times in response to an identical input. A stream cipher converts an input string (such as a message) into an encrypted output string (such as a ciphertext) using an input called a seed or key, with the goal that parties lacking the key will view the encrypted string as a random sequence. The level of encryption and, to some extent, the resources devoted to encryption determine the level of security (or randomness) to other parties.
Stream ciphers provide improved security over block ciphers, due to the lack of a fixed output response to a particular input. There exist in the art self-synchronizing (sometimes called asynchronous) and synchronous ciphers. In a synchronous stream cipher, later outputs from a decrypted stream do not suffer from an error that occurred during the transmission (excepting an error on the actual erroneous bit or group (block) of bits). When an error affects the decrypted stream, a self-synchronizing stream cipher is being employed. Self-synchronizing cipher stream methods permit the correct decryption of the stream after an error results in a number of blocks being decoded or transmitted erroneously.
Block and stream ciphers, and cryptography or transmission methods in general, make use of some important support methods. As an example, (pseudo-) random number generation is used in ciphers. Pseudo-random numbers are generated, for example, to provide seed or basis numbers for ciphering and deciphering methods. As another example, error correcting codes, which may be used to improve communication generally, particularly over noisy channels, may also provide benefit in cipher methods.